import axios from 'axios'

// 配置请求基础URL地址
axios.defaults.baseURL = '/v1'
// 配置请求超时时间
axios.defaults.timeout = 3000

/* 请求拦截 */
const username = 'jack'
const password = '123'
// 创建一个用于请求token的Axios对象
const newAxios = axios.create({baseURL:'/v1'})
// 通过axios请求拦截，将令牌放入请求头部
axios.interceptors.request.use(async config => { 
  // 判断令牌是否存在，是否过期
  let token = localStorage.getItem('accesstoken')
  if(!token || Date.now() > localStorage.getItem('expires') * 1000){
	// 重新请求
	const {data:{code,data}} = await newAxios.post('/accesstoken',{username,password})
	if(code === 0){
	  // 更新token
	  localStorage.setItem('accesstoken',data.token)
	  localStorage.setItem('expires',data.expires)
	  token = data.token
	}
  }
  // 请求头部携带token
  config.headers.Authorization = 'Bearer ' + token
  return config
})


/* 响应拦截 */
axios.interceptors.response.use( response => {
	// 在输出数据前，对数据进行拦截处理 
   return response.data
}, error => {
   return Promise.reject(error)
});


export default axios